// 服务器入口文件
const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const dotenv = require('dotenv');
const path = require('path');

// 加载环境变量
dotenv.config();

// 创建Express应用
const app = express();

// 设置端口
const PORT = process.env.PORT || 3000;

// 中间件配置
app.use(cors()); // 允许跨域请求
app.use(bodyParser.json()); // 解析JSON请求体
app.use(bodyParser.urlencoded({ extended: true })); // 解析URL编码请求体

// 静态文件服务
app.use('/uploads', express.static(path.join(__dirname, 'uploads')));

// 数据库连接
const db = require('./config/database');

// 测试数据库连接
db.authenticate()
  .then(() => {
    console.log('数据库连接成功');
  })
  .catch(err => {
    console.error('数据库连接失败:', err);
  });

// 导入路由
const userRoutes = require('./routes/user');
const associationRoutes = require('./routes/association');
const tipsRoutes = require('./routes/tips');
const emergencyRoutes = require('./routes/emergency');
const messageRoutes = require('./routes/message');
const adminRoutes = require('./routes/admin');

// 使用路由
app.use('/api/users', userRoutes);
app.use('/api/associations', associationRoutes);
app.use('/api/tips', tipsRoutes);
app.use('/api/emergency', emergencyRoutes);
app.use('/api/messages', messageRoutes);
app.use('/api/admin', adminRoutes);

// 根路由
app.get('/', (req, res) => {
  res.send('泉心护航小程序后端服务正在运行中');
});

// 错误处理中间件
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('服务器错误');
});

// 启动服务器
app.listen(PORT, () => {
  console.log(`服务器运行在 http://localhost:${PORT}`);
});

module.exports = app;